Skip to main content

Git Diff

Git Diff

git diff shows the exact line-by-line changes between two states of your repository, making it easy to review what you've changed before committing or after pulling.

What Does git diff Show?

git diff compares files and shows additions (lines starting with +) and removals (lines starting with -).

By default it compares your working directory against the staging area — in other words, changes you've made but not yet staged.

Basic Usage

Show unstaged changes:

git diff

Show staged changes (what will go into the next commit):

git diff --staged

Or the equivalent older flag:

git diff --cached

Diff a Specific File

git diff filename.txt

Diff Between Two Commits

git diff a3f6f1c d1e8f91

Use git log --oneline to find commit hashes.

Diff Between a Commit and the Working Directory

git diff HEAD

Diff Between Two Branches

git diff main..feature/user-login

This shows what's in feature/user-login that isn't in main.

Show a Summary (Changed Files Only)

git diff --stat

Output:

 src/app.py | 10 +++++-----
tests/test_app.py | 4 ++++
2 files changed, 10 insertions(+), 4 deletions(-)
tip

Run git diff --staged before every commit to do a final review of exactly what you're about to record. This catches accidental changes and debug code before they're committed.

Common Mistakes

Seeing no output when you expect changes — if changes are already staged, git diff (without --staged) won't show them. Use git diff --staged to see staged changes.

Being confused by the a/ and b/ prefixesa/ is the original file and b/ is the modified version. This is just diff notation, not a directory path.

Using git diff when git diff --stat is enough — for large diffs, start with --stat to see a summary of which files changed, then drill into specific files.


Next Steps: Comparing Branches and Commits

Enjoying the course? Found this useful? Check out the blog for more deep dives on data engineering and software.